import Vue from 'vue'
import { ACCESS_TOKEN, FREEZE_ERROR } from '@/store/mutation-types'
import store from '@/store'
import { Modal } from 'ant-design-vue'

/**
 * 单点登录
 */
const init = (callback) => {
  if (process.env.VUE_APP_SSO == 'true') {
    console.log('-------单点登录开始-------')
    const token = Vue.ls.get(ACCESS_TOKEN)
    const st = getUrlParam('ticket')
    const sevice = 'http://' + window.location.host + '/'
    if (token) {
      loginSuccess(callback)
    } else {
      if (st) {
        validateSt(st, sevice, callback)
      } else {
        const serviceUrl = encodeURIComponent(sevice)
        window.location.href = window._CONFIG['casPrefixUrl'] + '/login?service=' + serviceUrl
      }
    }
    console.log('-------单点登录结束-------')
  } else {
    callback && callback()
  }
}
const SSO = {
  init: init
}

function getUrlParam(paraName) {
  const url = document.location.toString()
  const arrObj = url.split('?')

  if (arrObj.length > 1) {
    const arrPara = arrObj[1].split('&')
    let arr

    for (let i = 0; i < arrPara.length; i++) {
      arr = arrPara[i].split('=')

      if (arr != null && arr[0] == paraName) {
        return arr[1]
      }
    }
    return ''
  } else {
    return ''
  }
}

function validateSt(ticket, service, callback) {
  const params = {
    ticket: ticket,
    service: service
  }
  store.dispatch('ValidateLogin', params).then(res => {
    // this.departConfirm(res)
    if (res.success) {
      loginSuccess(callback)
    } else {
      // const sevice = 'http://' + window.location.host + '/freezeError'
      // window.location.href = sevice
      alert('您的账号已冻结，请联系管理员')
      store.dispatch('Logout', 1).then(() => {
        const sevice = 'http://' + window.location.host + '/'
        const serviceUrl = encodeURIComponent(sevice)
        window.location.href = window._CONFIG['casPrefixUrl'] + '/login?service=' + serviceUrl
      })
    }
  }).catch((err) => {
    console.log(err)
    // that.requestFailed(err);
  })
}

function loginSuccess(callback) {
  callback()
}
export default SSO
